import RPi.GPIO as GPIO
import time

# 定义GPIO引脚编号模式为板载模式
GPIO.setmode(GPIO.BOARD)
print("GPIO.setmode(GPIO.BOARD)")
# 定义RGB灯条的控制引脚
R_PIN = 13  # 红色通道引脚
G_PIN = 15  # 绿色通道引脚
B_PIN = 16  # 蓝色通道引脚

# 设置GPIO引脚为输出模式
GPIO.setup(R_PIN, GPIO.OUT)
GPIO.setup(G_PIN, GPIO.OUT)
GPIO.setup(B_PIN, GPIO.OUT)
print("GPIO.setup")
# 创建PWM对象并设置频率（建议500Hz-2000Hz）
RED = GPIO.PWM(R_PIN, 2000)
GREEN = GPIO.PWM(G_PIN, 2000)
BLUE = GPIO.PWM(B_PIN, 2000)
print("GPIO.PWM")
# 启动PWM，初始占空比为0
RED.start(0)
GREEN.start(0)
BLUE.start(0)

print("BLUE.start")
# 定义设置颜色的函数
def setColor(r, g, b):
    """
    设置RGB灯条颜色。
    参数：
        r, g, b：0-100，分别表示红绿蓝通道的亮度（占空比）。
    """
    RED.ChangeDutyCycle(r)
    GREEN.ChangeDutyCycle(g)
    BLUE.ChangeDutyCycle(b)


# 检查是否直接运行该脚本
if __name__ == "__main__":
  while True:
  #for i in range(0,100):
    # 设置颜色为红色
    #setColor(0, 0, 100)
    # 让LED保持一段时间
    #time.sleep(1)

    #setColor(0, 100, 100)
    # 让LED保持一段时间
   #time.sleep(1)

    setColor(50, 0, 50)
    time.sleep(1)

    setColor(50, 50, 50)
    time.sleep(1)

    for i in range(101):
      setColor(i, 100 - i, i // 2)  # 渐变颜色
      time.sleep(0.05)
# try:
#     # 测试颜色：红色
#     setColor(100, 0, 0)
#     time.sleep(2)
#
#     # 测试颜色：绿色
#     setColor(0, 100, 0)
#     time.sleep(2)
#
#     # 测试颜色：蓝色
#     setColor(0, 0, 100)
#     time.sleep(2)
#
#     # 测试混合颜色：紫色
#     setColor(50, 0, 50)
#     time.sleep(2)
#
#     # 渐变效果
#     for i in range(101):
#         setColor(i, 100 - i, i // 2)  # 渐变颜色
#         time.sleep(0.05)
#
# finally:
#     # 停止PWM并清理GPIO设置
#     RED.stop()
#     GREEN.stop()
#     BLUE.stop()
#     GPIO.cleanup()
